Basic information about each framework.
Project |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
ASP.NET MVC |
Yes |
Yes |
Push |
|
ORM-independent |
Unit Tests |
|
ASP.NET Forms Auth |
pluggable (default is Razor) |
Yes |
Yes (client-side via plugins) |
BFC |
Yes |
Not mandatory |
Push & Pull |
Yes |
through active data dictionary |
Unit Tests |
SQL Server, Oracle, DB2, Sybase, MySQL |
security groups and rules |
Yes |
metadata and result sets |
data dictionary-driven |
DotNetNuke |
Yes |
No |
Pull |
Yes |
SubSonic, NHibernate |
Unit Tests |
Yes |
ACL-based (OpenID, LiveID, Active Directory, LDAP, CardSpace, ASP.NET Forms Auth) |
Yes |
Pluggable |
ASP.NET Validators, built-in API |
MonoRail |
Prototype |
Active record pattern |
Push |
Yes |
Active record pattern |
Unit Tests |
|
via ASP.NET Forms Authentication |
Yes |
Yes |
Yes |
OpenRasta |
No |
Yes |
Push |
Yes |
ORM-independent |
Unit Tests |
No |
HTTP Digest and via ASP.NET Forms Authentication or host environment |
Yes |
No |
No |
Project |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
ColdBox Platform |
Yes |
Yes |
Push & Pull |
Yes |
Yes |
via MockBox, MXUnit, and others |
via Plugin |
Yes |
Yes |
Yes |
via Plugin |
ColdFusion on Wheels |
Yes |
Yes |
|
via Plugin jLingua |
Yes |
Yes integrated RocketUnit |
via Plugin |
Yes |
|
via Plugin |
Yes |
Fusebox |
via CF or any JavaScript Library |
optional |
Push |
No, custom |
via lexicons for Transfer and Reactor |
via MXUnit, and others |
No |
via plugins |
|
via lexicon for ColdSpring |
No |
Mach-II |
via CF or any JavaScript Library |
Yes |
Push |
via plugin |
Transfer, Reactor, Hibernate |
via MXUnit, and others |
|
via plugins |
|
ColdSpring |
|
Model-Glue |
via CF or any JavaScript Library |
Yes |
Push |
|
Transfer, Reactor, Hibernate |
via MXUnit, and others |
|
via plugins |
|
ColdSpring |
|
onTap |
native features + Prototype + script.aculo.us |
optional |
Push |
Yes |
DataFaucet [3] |
via MXUnit, and others |
DataFaucet has potential - supports multiple db platforms |
Members onTap Plugin |
Yes |
Yes |
Yes |
Project |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Python 3.* |
CherryPy |
Python |
Yes |
controller & URL dispatching |
|
Yes |
ORM agnostic |
use stdlib's unittest and doctest |
depends on ORM |
|
Templating engine agnostic |
Yes |
Form validation engine agnostic |
Yes |
Grok |
Python |
Yes |
Yes |
Pull |
Yes |
OODBMS called ZODB, SQLAlchemy, Storm |
Unit Tests, Functional Tests |
ZODB Generations |
Yes |
Yes |
Yes |
Yes |
|
Pyjamas |
Python, JavaScript |
Yes |
Use PureMVC Python version (compiled to JavaScript) |
|
Yes |
???, no direct data access |
|
No |
|
|
|
|
No |
Pylons |
Python |
helpers for Prototype and script.aculo.us |
controller |
Push |
Yes |
ORM-agnostic |
via nose |
depends on ORM |
|
pluggable (Mako, genshi, myghty, kid, etc.) |
Beaker cache (memory, memcached, file, databases) |
preferred formencode |
No |
Pyramid |
Python |
Yes |
Yes |
Push |
Yes |
ORM-agnostic |
Yes |
depends on ORM |
Yes |
pluggable ((Chameleon, Genshi), (Mako); others may be plugged in) |
Beaker cache (memory, memcached, file, databases) |
preferred formencode |
Yes |
Django |
Python |
Django uses jquery in the admin, but is js-agnostic in the user templates |
Full Stack |
Push |
Yes |
Django ORM |
Yes |
reusable applications which might get merged into core e.g. South |
ACL-based |
Django Template Language |
Cache Framework |
Django Forms API |
No |
TurboGears |
Python |
Toolkit-independent, provides support via JSON |
Full stack, best-of-breed based |
Push |
Yes |
SQLAlchemy |
nose |
SQLAlchemy-Migrate |
Repoze.what & Repoze.who |
Genshi, additional plugins available |
Support for memcached, and any WSGI compliant system |
ToscaWidgets, utilizing FormEncode |
No |
web2py |
Python |
Yes |
Yes |
Push |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Webware |
Python |
No |
Optional |
Pull |
No |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
Zope 3 |
Python |
via add-on products, e.g. Plone w/KSS |
Yes |
Pull |
Yes |
ZODB, SQLObject, SQLAlchemy |
Unit Tests, Functional Tests |
ZODB generations |
ACL-based |
Yes |
Yes |
Yes |
No |
Zope 2 |
Python |
|
Yes |
Pull |
Yes |
ZODB, SQLObject, SQLAlchemy |
Unit Tests |
|
ACL-based |
Yes |
Yes |
CMFFormController |
No |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Spring |
Java |
Yes |
Yes |
Push |
Yes |
Hibernate, iBatis, etc |
Yes, mock objects & unit tests |
|
Spring Security (formerly Acegi) |
JSP, Commons Tiles, Velocity, Thymeleaf, etc. |
ehcache etc. |
Commons Validator |
Apache Click |
Java |
JQuery |
Page Oriented |
Pull |
Yes |
Hibernate and Cayenne |
Yes |
|
pluggable |
Velocity and JSP |
Cached Templates |
Built-in validation |
Apache Sling |
Java |
Yes |
Yes |
Push & Pull |
|
Uses JCR content repository |
|
|
Yes |
Yes |
Yes |
Apache Struts |
Java |
Yes |
Yes |
Push & Pull |
Yes |
Yes |
Unit Tests |
|
|
Yes |
|
Yes |
Apache Wicket |
Java |
Yes, extensions for YUI, ExtJS and more |
Modular event driven |
Pull |
Yes |
Yes, with extensions |
Yes, mock objects, unit and integration tests through an extension |
|
Yes |
Yes |
Yes |
Yes |
Aranea |
Java |
Yes |
|
Pull |
Yes |
Yes |
|
|
|
mapping-applications using contributions from users to advantage |
|
|
FormEngine |
Java |
Yes |
|
|
Yes |
own connector API |
|
|
|
|
|
AJAX validation on server and form state update |
ItsNat |
Java |
Yes |
event driven |
Push |
using Java i18n |
|
external and built-in |
|
pluggable |
pure HTML/SVG |
page caching |
normal Java |
JavaServer Faces |
Java |
Yes |
Yes |
Pull |
Yes |
Yes, with extensions |
JUnit |
|
Yes |
Facelets, JSP |
Yes |
Native validators and integration with Bean Validation |
JBoss Seam |
Java |
Yes |
Yes |
Pull |
Yes |
JPA, Hibernate |
JUnit, TestNG |
|
JAAS integration, Drools, Hibernate Filters, OpenID, CAPTCHA |
Facelets |
JBoss Cache, EHcache |
Hibernate Validator |
Jspx-bay |
Java |
Yes |
Page oriented |
|
|
Own API |
|
|
JAAS integration |
Master/Content Pages |
|
Yes, Internal UI validation controls |
JVx WebUI |
Java |
Yes |
Model Driven |
|
Yes |
Yes, pluggable |
JUnit |
|
Yes |
Single sourcing |
|
Yes, pluggable |
OpenXava |
Java |
Yes |
Model Driven |
|
Yes |
JPA, Hibernate and EJB2 CMP |
JUnit |
Hibernate tools |
uses JSR-168 portal security |
UI is automatically generated |
uses portal and JPA caching |
Yes |
Play |
Java |
Yes |
Yes |
Push and Pull |
Yes |
JPA, Hibernate |
JUnit, Selenium (Software) |
Yes |
via Core Security module |
Yes |
Yes |
Server-side validation |
RIFE |
Java |
DWR |
Yes |
Push & Pull |
Yes |
Yes |
Out of container testing |
|
Yes |
Yes |
Integration with Terracotta |
Yes |
Stripes |
Java |
Yes |
Yes |
Pull |
Yes |
JPA, Hibernate |
Yes |
|
framework extension |
Yes |
|
Yes |
Apache Tapestry |
Java |
Yes |
Yes |
Pull |
Yes |
integrated with Hibernate (tapestry-hibernate module) |
|
|
tapestry5-acegi library |
Yes |
|
built-in validation system |
Vaadin |
Java |
GWT |
|
Pull |
Yes |
Yes |
Yes |
|
|
Yes |
|
Yes |
Wavemaker |
JavaScript (client), Java (server) |
Dojo Toolkit |
Yes |
Push |
Dojo Toolkit |
Hibernate (Java) |
JUnit |
Hibernate (Java) |
Spring Security, Acegi, Role-based access control |
Dojo Toolkit |
Dojo Toolkit |
Regular expression, schema-driven validation |
WebObjects |
Java |
Yes |
Yes |
Push & Pull |
Yes |
EOF |
WOUnit (JUnit), TestNG, Selenium |
in Project WONDER |
|
Yes |
Yes |
Yes |
ztemplates |
Java JDK 1.5 or newer |
integrates YUI, Google etc. with annotations |
Yes |
Push, multiple actions per URL |
standard Java |
use any J2EE ORM framework |
Unit Tests |
|
annotation based |
Velocity, FreeMarker, JSP, others pluggable |
|
AJAX validation on server and form state update (YUI, JSON) |
Google Web Toolkit |
Java, JavaScript |
Yes |
|
|
Yes |
JPA with RequestFactory |
JUnit (too early), jsUnit (too difficult), Selenium (best) |
via Java |
Yes |
|
|
|
ZK |
Java, ZUML |
JQuery |
Yes |
Push & Pull |
Yes |
any J2EE ORM framework |
JUnit,ZTL |
HibernateUtil & SpringUtil |
Spring Security |
Macro components & Composition |
Yes |
client and server |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Scaffolding |
AppFlower |
PHP 5 |
Yes, ExtJS |
Yes |
Push |
Yes |
Propel |
Yes |
Plugin exists |
Plugin |
Yes |
Yes |
Yes |
Yes |
Agile Toolkit |
PHP 5.2 |
API to jQuery UI |
Yes |
Pull |
Mostly |
DSQL |
Yes |
Yes |
Plugin |
Yes |
No |
Yes |
Yes |
CakePHP |
PHP 5.2+ |
Prototype/script.aculo.us, jQuery/jQuery UI, MooTools/MooTools more |
Yes |
Push |
Yes |
Active record pattern (CakePHP 1.x), Data Mapper Pattern (CakePHP 2.x) |
Unit Tests, Object Mocking, Fixtures, Code Coverage, Memory Analysis with SimpleTest and XDebug PHPUnit ( cakephp 2.0) |
Yes |
ACL-based |
Themes, Layouts, Views and Elements |
Memcache, XCache, APC, File |
Validation and Security |
Yes |
CodeIgniter |
PHP >= 5.1 |
Any, its agnostic |
Yes |
Push |
Mostly[18] |
Third party only |
Ready for next release |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Drupal |
PHP |
jQuery/jQuery UI, more |
PAC |
N/A |
Yes |
Optional module |
SimpleTest |
Yes |
Yes |
Yes |
Memcache, APC, Varnish and more |
Yes |
No |
Zeta Components (previously eZ Components) |
PHP |
Toolkit-independent |
Yes |
Push |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Fusebox |
PHP |
Yes |
Not mandatory |
Push |
No, custom |
|
|
|
Multiple plugins available |
|
|
via qforms or built in PHP validation |
Yes |
FuelPHP |
PHP >= 5.3.x |
Yes |
MVC, HMVC |
Push |
Yes |
Yes |
PHPUnit |
Yes |
Yes, Plugins available |
Yes, Plugins available |
File, Redis, Memcache and more |
Yes |
Yes |
Joomla! Platform |
PHP >= 5.3.x |
Yes Mootools 1.3 |
Yes |
Push & Pull |
Yes |
Yes |
Unit Tests |
No |
Yes |
Yes |
Yes |
Yes |
No |
Kajona |
PHP 5 |
Yes |
Yes |
Yes |
Yes |
Yes |
Unit Tests |
Automatic |
Yes |
Yes |
Yes |
Yes |
No |
Kohana |
PHP 5 |
Yes |
MVC, HMVC |
Push |
Yes |
Yes |
PHPUnit, (as module) |
Yes |
Plugin |
Yes |
APC, Database, eAccelerator, File, Memcache, XCache |
Yes |
No |
Midgard |
PHP |
jQuery |
MidCOM |
Pull |
Yes |
Midgard |
PHPUnit |
datagard |
ACL-based |
PHP and TAL |
Memcache |
Yes |
No |
Movicon |
PHP |
No |
Yes |
Push |
Yes |
No |
Unit Tests |
No |
Yes |
Yes |
File |
No |
No |
Openbiz_Cubi |
PHP >= 5.1 |
Jquery, Jquery UI/Mobile, Prototype, script.aculo.us |
Yes |
Yes |
Yes |
DAO, XML-based |
|
Yes |
ACL, RBAC, Group |
Smarty, PHP template |
File, Memcache, APC |
Yes |
Yes |
Outglow |
PHP 5 |
jQuery, jQuery UI, OJAX |
Bridges |
Push |
Yes |
No |
No |
Yes |
Yes |
Custom |
Yes |
Yes |
No |
Qcodo |
PHP 5 |
built-in |
QControl |
Push |
Yes |
XML-based |
|
Inherent |
|
QForm and QControl |
Yes |
Yes |
No |
Rain Framework |
PHP 5 |
jQuery |
Yes |
Push |
Yes |
|
|
|
sanitize input, output and query |
RainTPL |
Yes |
Yes |
No |
Symfony |
PHP 5 |
Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins |
Yes |
Push |
Yes |
Propel, Doctrine (YAML) |
Yes |
Plugin exists (alpha code) |
Plugin |
PHP and Twig |
Yes |
Yes |
Yes |
Yii |
PHP 5 (>=5.1.0) |
jQuery, jQuery UI, own components, plugins |
Yes |
Push & Pull |
Yes |
Database Access Objects (DAO), Active Record, plugins |
PHPUnit, Selenium |
Yes |
ACL-based, RBAC-based, plugins |
PHP-based, PRADO-like, plugins |
APC, Database, eAccelerator, File, Memcache, WinCache, XCache, Zend Platform |
Yes |
Yes[19] |
ZanPHP |
PHP 5 (>=5.1.X) |
jQuery |
MVC & HMVC |
Push & Pull |
Yes |
ActiveRecord |
PHPUnit |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Zend Framework |
PHP 5 (>=5.2.4) |
Toolkit-independent |
Yes |
Push & Pull |
Yes |
Table and Row data gateway |
Unit Tests |
Yes |
ACL-based |
Yes |
Yes |
Yes |
No |
SilverStripe (Sapphire) |
PHP 5 (>=5.2) |
jQuery/jQuery UI |
|
Push & Pull |
Yes |
Active record pattern |
Unit Tests |
(Automatic) |
incl. OpenID |
|
Yes |
Yes |
Yes |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
Scaffolding |
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |
AIDA/Web |
Smalltalk |
Yes |
Yes |
|
Yes |
Gemstone/S, GLORP, etc. |
SUnit |
|
Yes |
|
|
Yes |
Application Express |
PL/SQL |
Yes |
|
|
Yes |
|
|
Yes |
Yes |
|
|
Yes |
Catalyst |
Perl |
Toolkit-independent (REST & JSON support, specific plugins for Prototype etc.) |
Yes |
Push in its most common usage |
Yes |
DBIx::Class, Rose::DB::Object, etc. |
It supports perl testing standards, Test Anything Protocol (TAP) |
|
ACL-based, external engines, etc. |
Template::Toolkit, HTML::Template, HTML::Mason, PHP and any existing Perl template engine |
Cache, Memcached, shared memory, etc. |
HTML::FormHandler HTML::FormFu, HTML::FormValidator, etc. |
Dancer |
Perl |
Yes |
Yes |
Push |
Yes |
DBIx::Class, ORMesque |
Yes |
|
|
Template::Toolkit, HTML::Mason, Text::MicroTemplate, any existing Perl template engine |
Cache, Memcached, shared memory, etc. |
DataFu, any existing Perl form validation software |
Flex |
Actionscript, MXML |
Not by name but similar technology[20] |
|
|
|
|
FlexUnit |
|
|
|
|
|
Grails |
Groovy |
Yes |
Active record pattern |
Push |
Yes |
GORM, Hibernate |
Unit Test, Integration test, Functional test |
multiple plugins(autobase, dbmigrate, etc.) |
Spring Security plugin |
Yes |
Yes |
Yes |
Kepler |
Lua |
|
Yes |
|
|
|
|
|
|
|
|
|
Lift |
Scala |
Yes |
Yes |
Pull |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Myna (FlightPath) |
JavaScript |
Yes |
Yes |
Push |
Yes, via model labels |
Yes |
|
|
Yes |
Yes |
Yes |
Yes |
Ocsigen |
OCaml |
Yes |
|
|
|
|
|
|
|
|
Yes |
Yes |
OpenACS |
Tcl |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
qooxdoo |
JavaScript |
Yes |
Data binding |
|
i18n |
|
Testrunner |
|
|
|
|
Form Validation |
Seaside |
Smalltalk |
jQuery, jQuery UI, Prototype, script.aculo.us, etc. |
Yes |
|
Yes |
GLORP, Gemstone/S, etc. |
Unit Tests, SUnit |
|
|
No, intentionally |
|
Magritte |
SproutCore |
JavaScript |
Yes |
Yes |
|
|
|
|
|
|
|
|
|
Project |
Language |
Ajax |
MVC framework |
MVC Push/Pull |
i18n & l10n? |
ORM |
Testing framework(s) |
DB migration framework(s) |
Security Framework(s) |
Template Framework(s) |
Caching Framework(s) |
Form Validation Framework(s) |